Circuit location sensor for component placement apparatus

ABSTRACT

Unique circuit location sensing apparatus for component placement robots (100) utilizes a high-resolution optical reflective sensor (110) for detecting the location of selected circuit runners (300, 301) on a printed circuit board (350). The sensor (110) is mounted to the robot arm (106) and coupled by A/D converting circuitry (104) to the robot computer (102). The robot computer (102) positions sensor (110) over a selected runner (300, 301) and steps sensor (110) across the selected runner (300, 301), storing the digitized sensor output for each step. The robot computer (102) processes the digitized sensor outputs to determine the actual location of the selected runner (300, 301) and then calculates location offsets for the component placement program to be subsequently run on the robot computer (102). As a result, variations in actual location of circuitry on different printed circuit boards (350) are automatically compensated for and components are more accurately placed thereon. The unique circuit location sensing apparatus of the present invention may be advantageously utilized in any component placement robot for accurately detecting the location of circuitry prior to placement of components on the printed circuit board.

BACKGROUND OF THE INVENTION

The present invention is generally related to component placementapparatus and more particularly to an improved circuit location sensorfor use in robotic component placement apparatus.

In the prior art, location sensors for robots typically include a cameraand a digital image processor in order to determine the position ofcircuitry on a printed circuit board. The camera scans the printedcircuit board, while the digital image processor receives and processeseach pixel in successive video frames to determine location-offsetinformation. Use of camera location sensors incurs a substantial costpenalty in terms of equipment and software.

Alternatively, location-offset information may be manually entered intocomponent placement programs to compensate for dimensional tolerances inprinted circuit boards. This alternative is both time consuming andcostly since manual labor is required. Accordingly, there is a need fora circuit location sensing apparatus and process that automaticallydetermines location-offset information for printed circuit boards andcompensates therefor.

SUMMARY OF THE INVENTION

Accordingly, it is an object of the present invention to provideimproved and inexpensive circuit location sensing apparatus for use incomponent placement apparatus.

It is another object of the present invention to provide improvedcircuit location sensing apparatus for use in component placementapparatus that automatically determines location-offset information forprinted circuit boards and compensates therefor.

Briefly described, the present invention encompasses sensing apparatusfor component placement apparatus including a robot arm for placingcomponents on a circuit board having circuit elements thereon. Thecomponent placement apparatus is responsive to a control signal forpositioning the robot arm and producing a strobe signal when the robotarm is positioned. The improved sensing apparatus comprises: sensingcircuitry attached to the robot arm and including a light source forilluminating the circuit board and a light sensor for producing anoutput signal having a magnitude proportional to the reflected lightfrom the illuminated circuit board; a converter coupled to the sensorfor converting the sensor output signal to a digitized signal inresponse to the strobe signal; a processor for producing the controlsignal to step said sensing means across a pre-selected circuit elementand processing the digitized signal produced at each step for detectingthe location of a pre-selected circuit element on the circuit board.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of a component placement robot 100 and apersonal computer 152 that may advantageously utilize the presentinvention.

FIG. 2 is a detailed circuit diagram of the A/D converter circuitry 104and sensor 110 in FIG. 1.

FIG. 3 is a section of printed circuit board 350 including metalizedcircuit runner 300 on the surface of the printed circuit board.

FIG. 4 shows waveforms 404 and 406 of the output of sensor 110 in FIG. 1as it is moved between points A and B in FIG. 3.

FIG. 5 is a flow chart for the process used by the robot computer 102 inFIG. 1 for running a component placement program on robot 100.

FIG. 6 is another section of printed circuit board 350 including acircular metalized circuit pad 310 and a ring shaped metalized circuitpad 311 on the surface of the printed circuit board.

DESCRIPTION OF THE PREFERRED EMBODIMENT

In FIG. 1, there is illustrated a component placement robot 100 and apersonal computer 152 that may advantageously utilize the presentinvention. Personal computer 152 may be any commercially availablecomputer that has a data link 154 for running a component placementprogram on computer 102 of robot 100. In the preferred embodiment of thepresent invention, personal computer 152 is an IBM personal computer.Robot 100 may be any commercially available component placement robotthat, under program control, automatically picks and placessurface-mount components on a printed circuit board 350. Robot 100includes arm 116 with end effector 108 for accessing and placingsurface-mount components. In the preferred embodiment of the presentinvention, robot 100 is an Accusembler Model SSR-H414-HS.

Accoring to the present invention, bracket 112 and sensor 110 arecoupled to robot arm 116 for sensing the precise location of metalizedcircuit runners 300-301 or metalized circuit pads 310-313 on printedcircuit board 350. Bracket 112 may include an air cylinder for extendingsensor 110 toward printed circuit board 350 when taking measurements.Sensor 110 is coupled to A/D converting circuitry 104 which converts thesensor output to an 8-bit digitized signal. Sensor 110 preferablyincludes a commercially available bar-code sensor which includes a lightsource, a light sensor and a transistor for producing an output whosemagnitude is proportional to the amount of light reflected from printedcircuit board 350. In the preferred embodiment of the present invention,sensor 110 is a Hewlett Packard HBCS-1100 high-resolution opticalreflective sensor.

Referring to FIG. 3, sensor 110 may be positioned over circuit elements,such as runner 300 or pad 310, and stepped across it to determine theprecise location of that circuit element. Robot computer 102 produces acontrol signal for positioning and stepping robot arm 116 across circuitrunner 300. As sensor 110 is stepped across circuit runner 300, theamount of reflected light detected by sensor 110 increases due to thegreater reflectivity of the circuit artwork pattern. The output signalof sensor 110 has a magnitude proportional to the amount of reflectedlight. The output signal of sensor 110 is converted to a digitizedsignal by A/D converter circuitry 104 in response to a strobe signalfrom robot computer 102, inputted into robot computer 102, and processedby robot computer 102 into location-offset information for correctingdimensional locations. Robot computer 102 uses the digitized signal tocalculate location offsets for the component placement program to be runalso by robot computer 102. The calculated location offsets compensatefor variations introduced in the manufacture of printed circuit boards350. By utilizing the present invention, variations in each printedcircuit board 350 may be compensated for automatically prior toplacement of surface-mount components thereon. The circuit locationsensor and process of the present invention may be advantageouslyutilized in any component placement robot simply by coupling uniquesensor 110 to the robot arm and A/D converting circuitry to the robotcomputer.

A section of printed circuit board 350 including circuit runner 300 hasbeen expanded in FIG. 3 to illustrate the circuit location sensingprocess of the present invention. Circuit runner 300 may vary inposition on different printed circuit boards 350. For example, onanother printed circuit board 350, circuit runner 300 may be inpositioned as shown by dashed lines 302. Sensor 110 is positioned byrobot 100 initially at point A and stepped along Y-axis to point B alongpath 304, and then back to point A along path 306. For maximumreflectance, sensor 110 is positioned between 4.07 and 4.27 millimetersfrom printed circuit board 350. Sensor 110 is stepped in increments of0.03 millimeters. At each step, the output of sensor 110 is digitized byA/D converter circuitry 104 in response to a strobe signal from robotcomputer 102 and stored in the memory of robot computer 102 forprocessing. Once the Y-axis scanning of circuit runner 300 is completed,sensor 110 is similarly stepped between points A and C along the X-axisof circuit runner 300. The foregoing process is then repeated at theopposite end of printed circuit board 350 for circuit runner 301.

Referring next to FIG. 4, there are illustrated waveforms of the outputof sensor 110 in FIG. 1 as it is moved beween points A and B in FIG. 3.Solid-line waveform 404 is for the path 304 from point A to B, anddashed-line waveform 406 is for the path 306 from point B to A. To findthe midpoint X of circuit runner 300, rising edges E11 and E21 arecalculated and averaged for the rising portions of waveforms 404 and406, respectively, and falling edges E12 and E22 are calculated andaveraged for the falling portions of waveforms 404 and 406,respectively. That is, rising edge E11 is the value of Y for whichrising portion of waveform 404 has a value of 1/2(V1+V3). Similarly,falling edge E12 is the value of Y for which falling portion of waveform406 has a value of 1/2(V1+V3). Rising edge E21 is the value of Y forwhich rising portion of waveform 406 has a value of 1/2(V2+V3).Similarly, falling edge E22 is the value of Y for which falling portionof waveform 404 has a value of 1/2(V2+V3). Then, the rising edgemidpoint XR is calculated by taking the average of rising edges E11 andE21. Similarly, the falling edge midpoint XF is calculated by taking theaverage of falling edges E12 and E22. If XR and XF do not agree within0.0005 inches, the process is repeated. The calculated values of XR andXF for circuit runners 300 and 301 are then used to offset the selectedcomponent placement program. Note that thresholds V1 and V2 may differdue to misalignment of sensor 110. The use of both rising edges and bothfalling edges to calculate midpoints XR and XF, respectively,compensates for misalignment of sensor 110. In the preferred embodimentof the present invention, the foregoing calculations are performed byrobot computer 102 in accordance with the computer program in theAppendix hereinbelow. For other robots, where the ability to runprograms is limited, the sensor data collection and location-offsetcorrection activities may be performed by personal computer 152.

Referring to FIG. 5, there is illustrated a flow chart for the processused by the robot computer 102 in FIG. 1 for running a componentplacement program on robot 100. Start block 502 is entered uponselection via the keyboard of personal computer 152 of a componentplacement program. Proceeding to block 504, sensor 110 is moved to pointA of the first runner 300. Next, at block 506, sensor 110 is stepped topoint B while storing the sensor ouptut for each step. Then, at block510, sensor 110 is rotated by 180°. Next, at block 508, sensor 110 isstepped back to point A while storing the sensor output for each step.The average rising midpoint XR and falling midpoint XF is thencalculated at block 512.

Next, at decision block 511, a check is made to determine if the Y-axisoffset has been calculated. If not, NO branch is taken back to repeatblocks 506,508, 510 and 512 for the path between points A and C. If theY-axis offset has been calculated, YES branch is taken from decisionblock 511 to decision block 514, where a check is made to determine ifsecond circuit runner 301 has been done. If not, NO branch is taken toblock 516 where sensor 110 is moved to point A of second circuit runner301. Thereafter, blocks 506, 508, 510 and 512 are repeated for points A,B and A,C for circuit runner 301. If second circuit runner has beendone, YES branch is taken from decision block 514 to block 518 where theoffset is computed using the calculated midpoints of the first andsecond circuit runners 300 and 301. Next, at block 520, the computedoffset is added to the selected component placement program. Lastly, atblock 522, the selected component placement program is executed by robotcomputer 102. Thereafter, program control returns to other tasks at doneblock 524.

Referring to FIG. 6, there are illustrated a circular metalized circuitpad 310 and a ring shaped metalized circuit pad 311 that likewise can besensed by the circuit location process of the present invention. Forlocating each of pads 310 and 311. sensor 110 is first positioned byrobot 100 at point A and stepped along the Y-axis to point B. Thisallows determination of falling edge midpoint XF (see FIG. 4). Sensor110 is then positioned by robot 100 at point C and stepped along theY-axis to point D. This allows determination of rising edge midpoint XR.Similar measurements can be taken along the X-axis to determine risingedge midpoint YR.

The diameters of the circular pads 310-313 are generally greater thanthe width of the circuit runners 300-301. Positioning sensor 110 at eachof two successive locations A and C allows sensor 110 and robot 100 tosense the circular pad 310-311 in fewer steps, and less time, thanrequired to step across the entire circuit runner 300 as explainedhereinabove with respect to FIG. 3. Positioning the sensor 110 at eachof two locations A, B, and C,D in FIG. 6 avoids the necessity of usingadditional rising edge and falling edge paths which would occur at thevoid in the center of pad 311.

Referring next to FIG. 2, there is illustrated a detailed circuitdiagram of the A/D converter circuitry 104 and sensor 110 in FIG. 1. A/Dconverter circuitry 104 includes optical coupler 202, A/D converter 206,clock oscillator 204, buffer amplifier 212, buffer gates 208 and voltageregulator 210. Optical coupler 202 couples a strobe signal from robotcomputer 102 to A/D converter 206 for initiating a conversion of asample of the output of sensor 110. Robot computer 102 produces thestrobe signal after each step of the robot arm 116. Buffer amplifier 212conditions the output of sensor 110 for application to A/D converter206. Clock oscillator 204 generates a clock signal for A/D converter206. Voltage regulator 210 generates the -5.2 V voltage for A/Dconverter circuitry 104 and sensor 110. Buffer gates 208 couple the8-bit output of A/D converter 206 to robot computer 102. In thepreferred embodiment, optical coupler 202 is a Motorola type 6N135optical coupler, A/D converter 206 is a Motorola type MC6108 A/Dconverter, clock oscillator 204 is a Motorola type RASC02 oscillator,buffer amplifier 212 is a Motorola type MC3403 amplifier, buffer gates208 are Motorola type 7407 buffer gates, and voltage regulator 210 is aMotorola type MC34063 voltage regulator.

In summary, a unique circuit location sensor has been described that maybe advantageously utilized in component placement robots. The uniquesensing apparatus illuminates a circuit board and senses reflected lightto determine the location of pre-selected circuit elements on thecircuit board and calculate location offsets for the component placementprograms subsequently run on the component placement robot. The locationsensing apparatus of the present invention may be advantageouslyutilized in any component placement robot where accurate placement ofthe components is necessary. Therefore, while a particular embodiment ofthe present invention has been shown and described, it should beunderstood that the present invention is not limited thereto since otherembodiments may be made by those skilled in the art without departingfrom the true spirit and scope thereof.

APPENDIX

The following computer program is coded into SPEL programming language,Version 1.0, marketed by Accusembler. SPEL is a programming languagesimilar to Microsoft BASIC programming language, but is compatible onlywith Accussembler robots. SPEL may be run on IBM personal computers orIBM compatible personal computers used with Accusembler robots. Thefollowing computer program provides a detailed description of thecomputer instructions utilized by robot computer 102 for scanningcircuit runners and/or pads and calculating offsets for the placementcomputer program to be run thereafter.

    __________________________________________________________________________    5000                                                                             ' REFLECTIVE SENSOR SUBROUTINE                                             5005                                                                             ' *********                                                                5010                                                                             ' THE TWO TARGET POINTS ARE DESIGNATED P22 AND P23                         5015                                                                             ' *********                                                                5020                                                                             ARM 3                                                                      5025                                                                             DIM D(80)                                                                  5030                                                                             DIM E(80)                                                                  5035                                                                             DIM G(80)                                                                  5037                                                                             DIM H(80)                                                                  5038                                                                             ON 13                                                                      5039                                                                             ON 14                                                                      5040                                                                             JUMP P22                                                                   5045                                                                             ON 15                                                                      5050                                                                             WAIT 0.2                                                                   5060                                                                             ' *********                                                                5070                                                                             ' SCAN IN X DIRECTION AT P22                                               5080                                                                             M= -1.23                                                                   5090                                                                             GO P22+XM                                                                  5100                                                                             N=M+.03                                                                    5110                                                                             FOR J+0 TO 79                                                              5120                                                                             GO P22+XN                                                                  5130                                                                             ON 7                                                                       5140                                                                             WAIT 0.1                                                                   5150                                                                             OFF 7                                                                      5160                                                                             WAIT 0.1                                                                   5170                                                                             E(J)=IN(1)                                                                 5180                                                                             N=N+.03                                                                    5190                                                                             NEXT                                                                       5200                                                                             ' *********                                                                5210                                                                             ' CALCULATE X OFFSET FOR P22                                               5220                                                                             V1=E(0)                                                                    5230                                                                             FOR K=1 TO 79 ' FIND MAXIMUM NUMBER                                        5240                                                                             IF E(K)<=V1 THEN GOTO 5260                                                 5250                                                                             V1=E(K) ' V1 EQUALS MAXIMUM NUMBER                                         5260                                                                             NEXT                                                                       5270                                                                             V2=E(0)                                                                    5280                                                                             FOR L=1 TO 79 ' FIND MINIMUM NUMBER                                        5290                                                                             IF E(L)> =V2 THEN GOTO 5310                                                5300                                                                             V2=E(L) ' V2 EQUALS MINIMUM NUMBER                                         5310                                                                             NEXT                                                                       5320                                                                             V3-(V1+V2)/2 ' V3 EQUALS MEAN NUMBER                                       5330                                                                             V4=0 ' COMPARE MEAN NUMBER TO ARRAY                                        5340                                                                             IF E(V4)>=V3 THEN GOTO 5370                                                5350                                                                             V4=V4+1                                                                    5360                                                                             GOTO 5340                                                                  5370                                                                             V5=79                                                                      5380                                                                             IF E(V5)>=V3 THEN GOTO 5410                                                5390                                                                             V5=V5-1                                                                    5400                                                                             GOTO 5380                                                                  5410                                                                             V6=(V4+V5)/2 ' V6 EQUALS THE STEP LOCATION OF                                 TARGET CENTER                                                              5420                                                                             B1=(V6-40)*(.03) ' S1 IS THE X OFFSET FOR P22                              5430                                                                             IF ABS(S1)<.06 THEN S1=0                                                   5440                                                                             ' ********                                                                 5450                                                                             GO P22+XS1                                                                 5460                                                                             WAIT 0.2                                                                   5470                                                                             ' ********                                                                 5480                                                                             ' SCAN IN Y DIRECTION AT P22                                               5490                                                                             M=-1.23                                                                    5500                                                                             GO P22+XS1-YM                                                              5510                                                                             N=M+.03                                                                    5520                                                                             FOR J=0 TO 79                                                              5530                                                                             GO P22+XS1-YN                                                              5540                                                                             ON 7                                                                       5550                                                                             WAIT 0.1                                                                   5560                                                                             OFF 7                                                                      5570                                                                             WAIT 0.1                                                                   5580                                                                             G(J)=IN(1)                                                                 5590                                                                             N=N+.03                                                                    5600                                                                             NEXT                                                                       5610                                                                             ' *****                                                                    5620                                                                             ' CALCULATE Y OFFSET FOR P22                                               5630                                                                             V7-G(0)                                                                    5640                                                                             FOR K=1 TO 79 ' FIND MAXIMUM NUMBER                                        5650                                                                             IF G(K)<=V7 THEN GOTO 5670                                                 5660                                                                             V7=G(K) ' V7 EQUALS MAXIMUM NUMBER                                         5670                                                                             NEXT                                                                       5680                                                                             V8-G(0)                                                                    5690                                                                             FIR K=1 TO 79 ' FIND MINIMUM NUMBER                                        5700                                                                             IF G(L)>=VB THE GOTO 5720                                                  5710                                                                             V8=G(L) ' V8 EQUALS MINIMUM NUMBER                                         5720                                                                             NEXT                                                                       5730                                                                             V9=(V7+V8)/2 ' V9 EQUALS MEAN NUMBER                                       5740                                                                             V10=0 ' COMPARE MEAN NUMBER TO ARRAY                                       5750                                                                             IF G(V10)>=V9 THEN GOTO 5780                                               5760                                                                             V10-V10+1                                                                  5770                                                                             GOTO 5750                                                                  5780                                                                             V11=79                                                                     5790                                                                             IF G(V11)>=V9 THEN GOTO 5820                                               5800                                                                             V11=V11-1                                                                  5810                                                                             GOTO 5790                                                                  5820                                                                             V12=(V1O+V11/2 ' V12 EQUALS THE STEP LOCATION OF                              TARGET CENTER                                                              5830                                                                             S2=(V12-40)*(.03) ' S2 IS THE Y OFFSET FOR P22                             5840                                                                             IF ABS(S2)<.06 THEN S2=0                                                   5850                                                                             ' *******                                                                  5860                                                                             JUMP P23                                                                   5870                                                                             WAIT 0.2                                                                   5880                                                                             ' *******                                                                  5890                                                                             ' SCAN IN X DIRECTION AT P23                                               5900                                                                             M1 =1.23+S1                                                                5910                                                                             GO P23+XM1+YS2                                                             5920                                                                             N1=M1+.03                                                                  5930                                                                             FOR J-0 TO 79                                                              5940                                                                             GO P23+XN1+YS2                                                             5950                                                                             ON 7                                                                       5960                                                                             WAIT 0.1                                                                   5970                                                                             OFF'7                                                                      5980                                                                             WAIT 0.1                                                                   5990                                                                             H(J)=IN(1)                                                                 6000                                                                             N1-N1+.03                                                                  6010                                                                             NEXT                                                                       6020                                                                             ' ******                                                                   6030                                                                             ' CALCULATE X OFFSET FOR P23                                               6040                                                                             V13=H(0)                                                                   6050                                                                             FOR K-1 TO 79 ' FIND MAXIMUM NUMBER                                        6060                                                                             IF H(K)<=V13 THEN GOTO 6080                                                6070                                                                             V13=H(K) ' V13 EQUALS MAXIMUM NUMBER                                       6080                                                                             NEXT                                                                       6090                                                                             V14=H(0)                                                                   6100                                                                             FOR L=1 TO 79 ' FIND MINIMUM NUMBER                                        6110                                                                             IF H(L)>=V14 THEN GOTO 6130                                                6120                                                                             V14=E(L) ' V14 EQUALS MINIMUM NUMBER                                       6130                                                                             NEXT                                                                       6140                                                                             V15=(V13+V14)/2 ' V15 EQUALS MEAN NUMBER                                   6150                                                                             V16=0 ' COMPARE MEAN NUMBER TO ARRAY                                       6160                                                                             IF H(V16)>=V15 THEN GOTO 6190                                              6170                                                                             V16=V16+1                                                                  6180                                                                             GOTO 6160                                                                  6190                                                                             V17-79                                                                     6200                                                                             IF E(V17)>=V15 THEN GOTO 6230                                              6210                                                                             V17=V17-1                                                                  6220                                                                             GOTO 6200                                                                  6230                                                                             V18=(V16+V17)/2 ' V18 EQUALS THE STEP LOCATION OF                             TARGET CENTER                                                              6240                                                                             S3=(V18-40)*(.03) ' S3 IS THE X OFFSET FOR P23                             6250                                                                             IF ABS(S3)<.06 THEN S3=0                                                   6260                                                                             ' ********                                                                 6270                                                                             GO P23                                                                     6280                                                                             WAIT 0.2                                                                   6290                                                                             ' ********                                                                 6300                                                                             ' SCAN IN Y DIRECTION AT P23                                               6310                                                                             M2=-1.23+S2                                                                6315                                                                             S8-S1+S3                                                                   6320                                                                             GO P23+XS8-YM2                                                             6330                                                                             N2=M2+.03                                                                  6340                                                                             FOR J=0 TO 79                                                              6350                                                                             GO P23+XS8-YN2                                                             6360                                                                             ON 7                                                                       6370                                                                             WAIT 0.1                                                                   6380                                                                             OFF 7                                                                      6390                                                                             WAIT 0.1                                                                   6400                                                                             D(J)=1N(1)                                                                 6410                                                                             N2=N2+.03                                                                  6420                                                                             NEXT                                                                       6430                                                                             ' *******                                                                  6440                                                                             ' CALCULATE Y OFFSET FOR P23                                               6450                                                                             V19=D(0)                                                                   6460                                                                             FOR K=1 TO 79 ' FIND MAXIMUM NUMBER                                        6470                                                                             IF D(K)<=V19 THEN GOTO 6490                                                6480                                                                             V19=D(K) ' V19 EQUALS MAXIMUM NUMBER                                       6490                                                                             NEXT                                                                       6500                                                                             V20=D(0)                                                                   6510                                                                             FOR L=1 TO 79 ' FIND MINIMUM NUMBER                                        6520                                                                             IF D(L)>=V20 THEN GOTO 6540                                                6530                                                                             V20-D(L) ' V20 EQUALS MINIMUM NUMBER                                       6540                                                                             NEXT                                                                       6550                                                                             V21=(V19+V20)/2 ' V21 EQUALS MEAN NUMBER                                   6560                                                                             V22=0 ' COMPARE MEAN NUMBER TO ARRAY                                       6570                                                                             IF D(V22)>=V21 THEN GOTO 6600                                              6580                                                                             V22=V22+1                                                                  6590                                                                             GOTO 6570                                                                  6600                                                                             V23=79                                                                     6610                                                                             IF D(V23)>=V21 THEN GOTO 6650                                              6620                                                                             V23=V23-1                                                                  6630                                                                             GOTO 6610                                                                  6650                                                                             V24=(V22+V23)/2 'V24 EQUALS THE STEP LOCATION OF                              TARGET CENTER                                                              6660                                                                             S4=(V24-40)*(.03) ' S4 IS THE Y OFFSET FOR P23                             6670                                                                             IF ABS(SR)<.06 THEN S4=0                                                   6680                                                                             ' ********                                                                 6700                                                                             OFF 15                                                                     6710                                                                             OFF 14                                                                     6720                                                                             OFF 13                                                                     6770                                                                             RETRN                                                                      6780                                                                             ' ********                                                                 7000                                                                             ' CIRCUIT BOARD OFFSET SUBROUTINE                                          7010                                                                             ' ********                                                                 7040                                                                             Q( )=                                                                      7050                                                                             T( )=                                                                      7060                                                                             C1=ABS(S3/(Q(23)-Q(22))) ' ACCUSEMBLER X STRETCH                           7070                                                                             C2=ABS(S4/(T(23)-T(22))) ' ACCUSEMBLER Y STRETCH                           7080                                                                             IF C1=C2 THEN GOTO 7190 ' NO ANGLE OFFSET                                  7090                                                                             IF C1<C2 THEN GOTO 7135 ' ANGLE OFFSET                                     CALCULATION                                                                   7100                                                                            B1=(C1-C2)*(Q(23)-Q(22))                                                    7110                                                                            B2=ABS(T(23)-T(22))/SQR((B1*B1)+T(23)-T(22))*                                 (T(23)-T(22))                                                               7120                                                                            B=ACS(B2)                                                                   7130                                                                            IF S3>0 THEN B=B*(-1)                                                       7134                                                                            GOTO 7170                                                                   7135                                                                            B3=(CE-C1)*(T(23)-T(22))                                                    7140                                                                            B4=ABS(Q(23)-Q(22))/SQR((B3*B3)+(Q(23)-Q(22))*                                (Q(23)-Q(22)))                                                              7150                                                                            B=ACS(B4) ' ANGLE VALUE                                                     7160                                                                            IF S4>0 THEN B=B*(-1)                                                       7170                                                                            ' ********                                                                  7180                                                                            S7=B*180/3.141593 ' U OFFSET FOR                                              ACCUSEMBLER                                                                 7185                                                                            GOTO 7200                                                                   7190                                                                            S7-0                                                                        7200                                                                            ' ********                                                                  7210                                                                            B5=SQR((Q(C)-Q(22))*(Q(C)-Q(22))+(T(C)-T(22))*                                (T(C)-T(22)))                                                               7220                                                                            B6=(T(C)-T(22))/B5                                                          7230                                                                            B7-ACS(B6) ' PLACEMENT POINT ANGLE                                          7240                                                                            B8=B7+B                                                                     7250                                                                            C3=SIN(B8)*B5+(Q(C)-Q(22))                                                  7260                                                                            ' ********                                                                  7270                                                                            S5=S1+C3+(S3*(Q(C)-Q(22))/(Q(23)-Q(22))) ' X OFFSET                         7280                                                                            ' ********                                                                  7290                                                                            C4=COS(B8)*B5-T(C)-(22))                                                    7300                                                                            ' ********                                                                  7310                                                                            S6=S2+C4+(S4*(T(C)-T(22))/(T(23)-T(22))) ' Y OFFSET                         7320                                                                            ' ********                                                                  7330                                                                            RETRN                                                                       7340                                                                            ' ********                                                                  __________________________________________________________________________

The present invention encompasses any and all such embodiments coveredby the following claims:

I claim:
 1. Component placement apparatus including processing means anda robot arm for placing components on a circuit board having at leastone circuit element thereon with first and second edge portions, theprocessing means producing a control signal for positioning the robotarm and producing a strobe signal when the robot arm is positioned, saidcomponent placement apparatus further comprising:sensing means attachedto the robot arm and including a light source producing light forilluminating the circuit board and an optical reflective light sensorfor producing an output signal having a magnitude proportional to thelight reflected from the illuminated circuit board; and converting meanscoupled to said sensing means for converting said output signal to adigitized signal in response to the strobe signal; and said processingmeans coupled to the robot arm for producing the control signal to stepsaid sensing means across said at least one circuit element and coupledto the converting means for processing the digitized signal produced ateach step for detecting the location of said at least one circuitelement on the circuit board.
 2. The component placement apparatusaccording to claim 1, wherein said converting means includes an analogto digital converter.
 3. A method for use in a component placementapparatus for determining the location of at least one circuit elementwith first and second edge portions on a circuit board, the componentplacement apparatus including processing means as a robot arm forplacing components on the circuit board, said method comprising thesteps of:illuminating the circuit board with light produced by a lightsource in sensing means attached to the robot arm; sensing the lightreflected from the circuit board with an optical reflective light sensorin the sensing means, the optical reflective light sensor producing anoutput signal having a magnitude proportional to the light reflectedform the illuminated circuit board; stepping the optical reflectivelight sensor across said at least one circuit element; processing theoutput signal of the optical reflective light sensor for each step fordetecting the location of said at least one circuit element.
 4. Themethod according to claim 3, wherein the output signal of the opticalreflective light sensor has rising and falling portions when sensinglight reflected from the first and second edge portions, respectively,and said processing step further includes the steps of:detecting therising and falling portions of the output signal of the opticalreflective light sensor to determine the location of the first andsecond edge portions of said at least one circuit element; and computingthe location of said at least one circuit element using the determinedlocation of the first and second edge portions of said at least onecircuit element.
 5. The method according to claim 3, wherein saidprocessing step further includes the steps of:converting the outputsignal of the optical reflective light sensor to a digitized signal foreach step; storing the digitized signal from each step; and computingthe location of said at least one circuit element using the storeddigitized signals.
 6. The method according to claim 3, wherein saidstepping step includes for a first path across said at least one circuitelement the steps of:stepping the optical reflective light sensor acrossthe first edge of said at least eon circuit element; and stepping theoptical reflective light sensor across the second edge of said at leastone circuit element.
 7. The method according to claim 6, furtherincluding the step of repeating said stepping steps for a second pathacross said at least one circuit element substantially perpendicular tosaid first path.
 8. A method of operating component placement apparatusincluding processing means and a robot arm for placing components on acircuit board having at least one circuit element thereon with first andsecond edge portions, said method comprising the steps of:(a) loading acomponent placement program into said processing means; (b) determiningthe location of said at least one circuit element by the steps of:(i)illuminating the circuit board with light produced by a light source insensing means attached to the robot arm; (ii) sensing the lightreflected from the circuit board with an optical reflective light sensorin the sensing means, the optical reflective light sensor producing anoutput signal having a magnitude proportional to the light reflectedfrom the illuminated circuit board; (iii) stepping the opticalreflective light sensor across said at least one circuit element; (iv)processing the output signal of the optical reflective light sensor foreach step for detecting the location of said at least one circuitelement; (c) modifying the component placement program using thelocation determined for said at least one circuit element; and (d)executing the modified component placement program.
 9. Componentplacement apparatus including processing means and a robot arm forplacing components on a circuit board having at least one circuitelement thereon with first and second edge portions, the processingmeans producing a control signal for positioning the robot arm andproducing a strobe signal when the robot arm is positioned, saidcomponent placement apparatus further comprising:sensing means attachedto the robot arm and including a light source producing light forilluminating the circuit board and an optical reflective light sensorfor producing an output signal having a magnitude proportional to thelight reflected from the illuminated circuit board; and converting meanscoupled to said sensing means for converting said output signal to adigitized signal in response to the strobe signal; and said processingmeans coupled to the robot arm for producing the control signal to stepsaid sensing means across said at least one circuit element at least twotimes along the same path and coupled to the converting means forprocessing the digitized signal produced at each step for detecting thelocation of said at least one circuit element on the circuit board. 10.Component placement apparatus including processing means and a robot armfor placing components on a circuit board having at least one circuitelement thereon with first and second edge portions, the processingmeans producing a control signal for positioning the robot arm andproducing a strobe signal when the robot arm is positioned, saidcomponent placement apparatus further comprising:sensing means attachedto the robot arm and including a light source producing light forilluminating the circuit board and an optical reflective light sensorfor producing an output signal having a magnitude proportional to thelight reflected from the illuminated circuit board; and converting meanscoupled to said sensing means for converting said output signal to adigitized signal in response to the strobe signal; and said processingmeans coupled to the robot arm for producing the control signal to stepsaid sensing means across said at least one circuit element and coupledto the converting means for processing the digitized signal produced ateach step for detecting the location of the first and second edgeportions of said at least one circuit element on the circuit board.